Skip to content
This repository has been archived by the owner on Sep 1, 2020. It is now read-only.

Latest commit

 

History

History
42 lines (35 loc) · 1.37 KB

3.3.1 - Coroutine/Client->connect.md

File metadata and controls

42 lines (35 loc) · 1.37 KB

Coroutine\Client->connect

连接到远程服务器,函数原型:

bool $swoole_client->connect(string $host, int $port, float $timeout = 0.5, int $sock_flag = 0)

connect方法接受4个参数:

  • $host是远程服务器的地址,2.0.12或更高版本可直接传入域名,底层会自动进行协程切换解析域名为IP地址
  • $port是远程服务器端口
  • $timeout是网络IO的超时时间,包括connect/send/recv,单位是秒s,支持浮点数。默认为0.5s,即100ms,超时发生时,连接会被自动close
  • connect操作会有一次协程切换开销,connect发起时yield,完成时resume

原先异步客户端不支持recv超时,现在协程版已经支持超时,复用上面的$timeout参数

使用实例

connect不会发生阻塞,connect事件触发后,切回PHP上下文。

if ($cli->connect('127.0.0.1', 9501)) {
      $cli->send("data");
} else {
      echo "connect failed.";
}

如果连接失败,会返回false

超时后返回,检查$cli->errCode110

失败重试

connect连接失败后,不可直接进行重连。必须使用close关闭已有socket,然后再进行connect重试。

//连接失败
if ($cli->connect('127.0.0.1', 9501) == false) {
	//关闭已有socket
	$cli->close();
	//重试
	$cli->connect('127.0.0.1', 9501);
}